FPGA's are finding increasing application as logic and/or processing elements. One type of FPGA utilizes SRAM cells, which requires six transistors. The SRAM is used to provide configurable or programmable switches. The programming code is stored as a bitmap typically off chip in non-volatile memory. The SRAM based FPGA is programmed by first programming the non-volatile memory. Then, the bitstram from the non-volatile memory is loaded from the non-volatile memory to the SRAM. The SRAM then is used to control the FPGA. This multi-chip solution results in a large form factor and relatively high cost.
Another type of FPGA is based upon anti-fuse technology. Although widely accepted, anti-fuse technology requires specialized fuse manufacturing process. Further, a FPGA based upon anti-fuse technology can only be programmed once.
Yet another type of FPGA is based upon flash memory technology. However, flash memory technology requires a relatively more complex semiconductor manufacturing process, thereby increasing cost. Further, flash memory technology is typically one to two generations behind advanced CMOS logic processes.